package com.tul.exercise.base.thread.base;

import com.tul.cusa.common.log.LogTracerFactory;
import com.tul.cusa.common.log.intf.ILogTracer;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;

/**
 * 启动和开始一个线程
 */
public class BasicThread {
    /**
     * 日志
     */
    private static final ILogTracer TRACER = LogTracerFactory.getTracer(BasicThread.class);

    public static void main(String[] args) {
        // 使用线程类包裹任务
        Thread t = new Thread(new LightOff());
        // 启动线程
        t.start();

        // 主线程的任务
        System.out.println("Wait for Light Off");
    }

    /**
     * 提交并运行OLT设备健康度任务
     */
    private static void oltHealthTaskSumit() {
        // 任务个数
        int taskNumber = 20;

        // 新建线程池
        ExecutorService service = PonExecutors.getOltHealthThreadPool();

        // 任务结果
        List<Future<Boolean>> results = new ArrayList<>(taskNumber);


        // 任务提交到线程池
        for (int i = 0; i < taskNumber; i++) {
            OltHealthTask task = new OltHealthTask();
            Future<Boolean> result = service.submit(task);
            results.add(result);
        }

        // 获取结果
        try {
            for(Future<Boolean> result :results) {
                Boolean isDone = result.get();
                // todo 拿到结果之后的具体 操作
            }
        }catch (Exception e) {
            TRACER.error("任务异常", e);
        }

    }
}
